'use strict'

function userRouting($stateProvider) {
    $stateProvider.state('user', {
        url: '/user',
        template: require('./user.html'),
        controller: 'UserController as user',
        /**
         * 可以使用resolve为控制器提供可选的依赖注入项。
         * resolve配置项是一个由key/value构成的对象。
         *  key – {string}：注入控制器的依赖项名称。
         *  factory - {string|function}：
         *      string：一个服务的别名
         *      function：函数的返回值将作为依赖注入项，如果函数是一个耗时的操作，那么控制器必须等待该函数执行完成（be resolved）才会被实例化。
         */
        resolve: {
            loadUserController: ($q, $ocLazyLoad) => {
                return $q((resolve) => {
                    require.ensure([], () => {
                        let module = require('./user.index');
                        $ocLazyLoad.load({name: module.name});
                        resolve(module.controller);
                    });
                });
            }
        }
    }).state('user.add', {
        url: '/add',
        template: require('./user.add.html')
        /*resolve: {
            loadUserController: ($q, $ocLazyLoad) => {
                return $q((resolve) => {
                    require.ensure([], () => {
                        let module = require('./user.index');
                        $ocLazyLoad.load({name: module.name});
                        resolve(module.controller);
                    });
                });
            }
        }*/
    }).state('user.detail', {
        url: '/detail',
        template: require('./user.detail.html')
    }).state('user.empty', {
        url: '',
        template: ''
    });
}

export default angular.module('user.routing', []).config(userRouting).name;